import axios from "axios";

const isDev = process.env.NODE_ENV == 'development'

//请求创建
const request = axios.create({
    baseURL: '/',
    timeout: 60000
})


// 添加请求拦截器
request.interceptors.request.use(function (config) {
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response.data
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});


//定义各种请求方法
export default function ajax(config) {
    //解构出需要用到的对象
    const { url, method = 'get', data = {}, headers = {} } = config

    //判断请求类型
    switch (method.toUpperCase()) {
        case 'GET':
            return request.get(url, { params: data })
        case 'POST':
            // 判断是表单数据
            if (headers['content-type'] == 'application/x-www-form-urlencoded') {
                const obj = new URLSearchParams()
                for (const key in data) {
                    obj.append(key, data[key])
                }
                return request.post(url, obj, { headers })
            }
            // 判断是文件数据
            if (headers['content-type'] == 'multipart/form-data') {
                const obj = new FormData()
                for (const key in data) {
                    obj.append(key, data[key])
                }
                return request.post(url, obj, { headers })
            }
            return request.post(url, data)
        default:
            return request.request(config)
    }
}


